Warning: mkdir(): No space left on device in /var/www/tg-me/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/machinelearning_interview/--): Failed to open stream: No such file or directory in /var/www/tg-me/post.php on line 50
Machine learning Interview | Telegram Webview: machinelearning_interview/1785 -
Telegram Group & Telegram Channel
🧩 Задача для дата-сайентистов: "Средняя зарплата" (с подвохом)

📖 Описание задачи

У вас есть DataFrame df с данными о зарплатах сотрудников компании:


import pandas as pd

data = {
'employee_id': [1, 2, 3, 4, 5, 6],
'department': ['IT', 'IT', 'HR', 'HR', 'Finance', 'Finance'],
'salary': [100000, None, 50000, None, 70000, None]
}

df = pd.DataFrame(data)
print(df)


Результат:


employee_id department salary
0 1 IT 100000.0
1 2 IT NaN
2 3 HR 50000.0
3 4 HR NaN
4 5 Finance 70000.0
5 6 Finance NaN


В задаче требуется заполнить пропущенные значения зарплат в каждом отделе медианой зарплаты этого отдела.
Если медиана не может быть рассчитана (например, все значения NaN) — оставить NaN.

Вы пишете следующий код:


df['salary_filled'] = df.groupby('department')['salary'].transform(lambda x: x.fillna(x.median()))


Код выполняется без ошибок, но когда вы проверяете результат:


print(df)


Получаете:


employee_id department salary salary_filled
0 1 IT 100000.0 100000.0
1 2 IT NaN 100000.0
2 3 HR 50000.0 50000.0
3 4 HR NaN 50000.0
4 5 Finance 70000.0 70000.0
5 6 Finance NaN 70000.0


Всё вроде бы верно…

Но через неделю приходит заказчик и говорит:

> «Ты заполнил пропуски, но потом выяснилось, что в реальных данных в одном отделе все зарплаты NaN, а значит медиана не существует.
> А в твоём коде при такой ситуации почему-то появляется 0 вместо NaN!»

📝 Вопросы:

1. Почему появилось 0 (хотя ожидалось NaN)?
2. Как переписать код так, чтобы:
- Если медиана существует → заполнить ею NaN
- Если медиана не существует (все значения NaN) → оставить NaN

---

🎯 Что проверяет задача:

Понимание, как median() работает на пустой серии
Понимание, что fillna(np.nan) может привести к замещению на 0 при приведении типов
Умение работать с группами, где нет данных

---

💡 Подсказка:

Если `x.median()` вернёт `nan`, то `x.fillna(nan)` оставит NaN внутри группы, **но transform может "автоматически" заменить NaN на 0 при сборке результата** (особенность Pandas).

Нужно явно управлять значением медианы, чтобы избежать непредвиденного замещения.

---

Ожидаемое правильное решение:

```python
def fill_with_median_or_nan(x):
med = x.median()
return x.fillna(med if pd.notna(med) else np.nan)

df['salary_filled'] = df.groupby('department')['salary'].transform(fill_with_median_or_nan)
```

Теперь в отделах, где медиана не существует, **NaN останется NaN**, а не превратится в 0.


🔥 Дополнительный подвох (для усложнения):

Что будет, если отдел состоит только из одного сотрудника с NaN?
→ Нужно ли обработать случай, где в отделе всего 1 запись и она NaN?


📝 Вывод:

Эта задача проверяет:

Понимание нюансов заполнения пропусков в Pandas
Внимательность к corner-case ситуациям
Умение работать с группами с частично или полностью отсутствующими данными

🔥 Отличная тренировка внимательности и глубины понимания Pandas!



tg-me.com/machinelearning_interview/1785
Create:
Last Update:

🧩 Задача для дата-сайентистов: "Средняя зарплата" (с подвохом)

📖 Описание задачи

У вас есть DataFrame df с данными о зарплатах сотрудников компании:


import pandas as pd

data = {
'employee_id': [1, 2, 3, 4, 5, 6],
'department': ['IT', 'IT', 'HR', 'HR', 'Finance', 'Finance'],
'salary': [100000, None, 50000, None, 70000, None]
}

df = pd.DataFrame(data)
print(df)


Результат:


employee_id department salary
0 1 IT 100000.0
1 2 IT NaN
2 3 HR 50000.0
3 4 HR NaN
4 5 Finance 70000.0
5 6 Finance NaN


В задаче требуется заполнить пропущенные значения зарплат в каждом отделе медианой зарплаты этого отдела.
Если медиана не может быть рассчитана (например, все значения NaN) — оставить NaN.

Вы пишете следующий код:


df['salary_filled'] = df.groupby('department')['salary'].transform(lambda x: x.fillna(x.median()))


Код выполняется без ошибок, но когда вы проверяете результат:


print(df)


Получаете:


employee_id department salary salary_filled
0 1 IT 100000.0 100000.0
1 2 IT NaN 100000.0
2 3 HR 50000.0 50000.0
3 4 HR NaN 50000.0
4 5 Finance 70000.0 70000.0
5 6 Finance NaN 70000.0


Всё вроде бы верно…

Но через неделю приходит заказчик и говорит:

> «Ты заполнил пропуски, но потом выяснилось, что в реальных данных в одном отделе все зарплаты NaN, а значит медиана не существует.
> А в твоём коде при такой ситуации почему-то появляется 0 вместо NaN!»

📝 Вопросы:

1. Почему появилось 0 (хотя ожидалось NaN)?
2. Как переписать код так, чтобы:
- Если медиана существует → заполнить ею NaN
- Если медиана не существует (все значения NaN) → оставить NaN

---

🎯 Что проверяет задача:

Понимание, как median() работает на пустой серии
Понимание, что fillna(np.nan) может привести к замещению на 0 при приведении типов
Умение работать с группами, где нет данных

---

💡 Подсказка:

Если `x.median()` вернёт `nan`, то `x.fillna(nan)` оставит NaN внутри группы, **но transform может "автоматически" заменить NaN на 0 при сборке результата** (особенность Pandas).

Нужно явно управлять значением медианы, чтобы избежать непредвиденного замещения.

---

Ожидаемое правильное решение:

```python
def fill_with_median_or_nan(x):
med = x.median()
return x.fillna(med if pd.notna(med) else np.nan)

df['salary_filled'] = df.groupby('department')['salary'].transform(fill_with_median_or_nan)
```

Теперь в отделах, где медиана не существует, **NaN останется NaN**, а не превратится в 0.


🔥 Дополнительный подвох (для усложнения):

Что будет, если отдел состоит только из одного сотрудника с NaN?
→ Нужно ли обработать случай, где в отделе всего 1 запись и она NaN?


📝 Вывод:

Эта задача проверяет:

Понимание нюансов заполнения пропусков в Pandas
Внимательность к corner-case ситуациям
Умение работать с группами с частично или полностью отсутствующими данными

🔥 Отличная тренировка внимательности и глубины понимания Pandas!

BY Machine learning Interview


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/machinelearning_interview/1785

View MORE
Open in Telegram


Machine learning Interview Telegram | DID YOU KNOW?

Date: |

Pinterest (PINS) Stock Sinks As Market Gains

Pinterest (PINS) closed at $71.75 in the latest trading session, marking a -0.18% move from the prior day. This change lagged the S&P 500's daily gain of 0.1%. Meanwhile, the Dow gained 0.9%, and the Nasdaq, a tech-heavy index, lost 0.59%. Heading into today, shares of the digital pinboard and shopping tool company had lost 17.41% over the past month, lagging the Computer and Technology sector's loss of 5.38% and the S&P 500's gain of 0.71% in that time. Investors will be hoping for strength from PINS as it approaches its next earnings release. The company is expected to report EPS of $0.07, up 170% from the prior-year quarter. Our most recent consensus estimate is calling for quarterly revenue of $467.87 million, up 72.05% from the year-ago period.

Why Telegram?

Telegram has no known backdoors and, even though it is come in for criticism for using proprietary encryption methods instead of open-source ones, those have yet to be compromised. While no messaging app can guarantee a 100% impermeable defense against determined attackers, Telegram is vulnerabilities are few and either theoretical or based on spoof files fooling users into actively enabling an attack.

Machine learning Interview from de


Telegram Machine learning Interview
FROM USA